// 引入模块
var utils 		= require('./utils/function');
var express 	= require('express');
var URL 		= require('url');
var mysql		= require('mysql');
// var routes 		= require('./routes');

// 定义HTTP监听主机和端口
var HTTP_PORT 	 = 8770;
var HTTP_HOST_IP = '0.0.0.0';

// 全局配置
var G = {
	db_config : {
		host     : 'localhost',
		user     : 'root',
		password : 'qcloud333',
		database : 'product_renly',
	},
	db : null,
};

// 创建常用方法类
var L = utils.l;
L.log = function(s){L(utils.logtime() + ' => '+s)};
// 要在app.use之后使用，判断两方mysql连接密码
// 因此创建异步数据库连接方法
L.db_connect = function(){
	// 连接数据库，避免多进程连接
	// G.db && console.log(G.db.state);
	if( G.db==null || G.db.state=='disconnected' ){
		G.db = mysql.createConnection(G.db_config);
		G.db.connect(function(err){
			if( err ){
				L.log('SQL CONNECT ERROR: '+err);
			}
			else{
				L.log('SQL CONNECT SUCCESS, THREADID: '+G.db.threadId);
			}
		});

		// 监听连接事件
		G.db.on('close', function(err){
			L.log('SQL CONNECTION CLOSED.');
		});
		G.db.on('error', function(err){
			L.log('SQL CONNECTION ERROR: '+err);
		});
	}
}

// 开始APP，定义路由，开启http监听
var app = express();
var router = express.Router();
var server = app.listen(HTTP_PORT, HTTP_HOST_IP, function(){
	L.log("Listen on port "+server.address().port);
});

// 设定模版引擎
app.set("view engine","ejs");
app.use('/static', express.static(__dirname + '/static'));
// L.log(routes);
// app.use(express.Router(routes));

// routes;


// 所有http请求都会走这里
app.use(function(req, res, next){
	if ( req.host.indexOf('localhost')!==-1 ){
		G.db_config.password = 'GeeDream2014';
	}
	next();
});

// 前台
app.get('/', function(req, res){
	res.render("index",{
	  	seo_title : '攻略列表 - 蓝礼',
	});
});


// 列表
app.get('/api/raider/list/:page', function(req, res) {
	var page = req.params.page;
	if( isNaN(parseInt(page)) ){
		res.send(404);
	}
	else{
		var per = 5;
		var beg = (page-1)*per;
		var sql = 'SELECT id, title, avatar, content, praise, time_update '
			+'FROM raider '
			+'WHERE 1 '
			+'ORDER BY id DESC '
			+'LIMIT '+beg+', '+per;

		L.db_connect();
		G.db.query(sql, function(err, rows, fields) {
		  	if (err) { throw err };
			// if ( rows[0]===undefined ){
			// 	res.send(404);
			// 	return;
			// }

			res.json(rows);
		});
	}
});

// 详情
app.get('/api/raider/detail/:id', function(req, res){
	var id = req.params.id;
	if( isNaN(parseInt(id)) ){
		res.send(404);
	}
	else{
		var sql = 'SELECT id, title, content, avatar, praise, time_update '
			+'FROM raider '
			+'WHERE id='+id;

		L.db_connect();
		G.db.query(sql, function(err, rows, fields) {
		  	if (err) { throw err };
			// if ( rows[0]===undefined ){
			// 	res.send(404);
			// 	return;
			// }
			res.json(rows[0]);
		});
	}
});
